// pages/medical-record-query/medical-record-query.js
Page({
  data: {
    patientInfo: { name: '', relation: '本人', idNumber: '' },
    showPatientModal: false,
    showTimePicker: false,
    patientList: [],
    recordList: [
      // 2025年数据
      { id: 1, date: '2025年1月15日', type: '门诊病历', doctor: '王然', patient: '蒋峰', diagnosis: '消化道溃疡并出血' },
      { id: 2, date: '2025年2月20日', type: '门诊病历', doctor: '李医生', patient: '蒋峰', diagnosis: '高血压病' },
      { id: 3, date: '2025年3月10日', type: '门诊病历', doctor: '张医生', patient: '蒋峰', diagnosis: '糖尿病' },
      { id: 4, date: '2025年4月5日', type: '门诊病历', doctor: '刘医生', patient: '蒋峰', diagnosis: '冠心病' },
      { id: 5, date: '2025年5月12日', type: '门诊病历', doctor: '陈医生', patient: '蒋峰', diagnosis: '慢性胃炎' },
      { id: 6, date: '2025年6月8日', type: '门诊病历', doctor: '赵医生', patient: '蒋峰', diagnosis: '支气管炎' },
      // 2024年数据
      { id: 7, date: '2024年1月10日', type: '门诊病历', doctor: '孙医生', patient: '蒋峰', diagnosis: '急性阑尾炎' },
      { id: 8, date: '2024年2月15日', type: '门诊病历', doctor: '周医生', patient: '蒋峰', diagnosis: '胆囊炎' },
      { id: 9, date: '2024年3月20日', type: '门诊病历', doctor: '吴医生', patient: '蒋峰', diagnosis: '肾结石' },
      { id: 10, date: '2024年4月25日', type: '门诊病历', doctor: '郑医生', patient: '蒋峰', diagnosis: '腰椎间盘突出' },
      { id: 11, date: '2024年5月30日', type: '门诊病历', doctor: '林医生', patient: '蒋峰', diagnosis: '颈椎病' },
      { id: 12, date: '2024年6月5日', type: '门诊病历', doctor: '黄医生', patient: '蒋峰', diagnosis: '关节炎' },
      // 2023年数据
      { id: 13, date: '2023年1月8日', type: '门诊病历', doctor: '马医生', patient: '蒋峰', diagnosis: '肺炎' },
      { id: 14, date: '2023年2月12日', type: '门诊病历', doctor: '朱医生', patient: '蒋峰', diagnosis: '哮喘' },
      { id: 15, date: '2023年3月18日', type: '门诊病历', doctor: '胡医生', patient: '蒋峰', diagnosis: '过敏性鼻炎' },
      { id: 16, date: '2023年4月22日', type: '门诊病历', doctor: '郭医生', patient: '蒋峰', diagnosis: '湿疹' },
      { id: 17, date: '2023年5月28日', type: '门诊病历', doctor: '何医生', patient: '蒋峰', diagnosis: '荨麻疹' },
      { id: 18, date: '2023年6月3日', type: '门诊病历', doctor: '王医生', patient: '蒋峰', diagnosis: '偏头痛' },
      // 2022年数据
      { id: 19, date: '2022年1月5日', type: '门诊病历', doctor: '李医生', patient: '蒋峰', diagnosis: '失眠' },
      { id: 20, date: '2022年2月10日', type: '门诊病历', doctor: '张医生', patient: '蒋峰', diagnosis: '抑郁症' },
      { id: 21, date: '2022年3月15日', type: '门诊病历', doctor: '刘医生', patient: '蒋峰', diagnosis: '焦虑症' },
      { id: 22, date: '2022年4月20日', type: '门诊病历', doctor: '陈医生', patient: '蒋峰', diagnosis: '神经衰弱' },
      { id: 23, date: '2022年5月25日', type: '门诊病历', doctor: '赵医生', patient: '蒋峰', diagnosis: '植物神经功能紊乱' },
      { id: 24, date: '2022年6月1日', type: '门诊病历', doctor: '孙医生', patient: '蒋峰', diagnosis: '更年期综合征' },
      // 2021年数据
      { id: 25, date: '2021年1月3日', type: '门诊病历', doctor: '周医生', patient: '蒋峰', diagnosis: '月经不调' },
      { id: 26, date: '2021年2月8日', type: '门诊病历', doctor: '吴医生', patient: '蒋峰', diagnosis: '痛经' },
      { id: 27, date: '2021年3月12日', type: '门诊病历', doctor: '郑医生', patient: '蒋峰', diagnosis: '乳腺增生' },
      { id: 28, date: '2021年4月18日', type: '门诊病历', doctor: '林医生', patient: '蒋峰', diagnosis: '子宫肌瘤' },
      { id: 29, date: '2021年5月23日', type: '门诊病历', doctor: '黄医生', patient: '蒋峰', diagnosis: '卵巢囊肿' },
      { id: 30, date: '2021年6月28日', type: '门诊病历', doctor: '马医生', patient: '蒋峰', diagnosis: '宫颈炎' },
      // 2020年数据
      { id: 31, date: '2020年1月1日', type: '门诊病历', doctor: '朱医生', patient: '蒋峰', diagnosis: '阴道炎' },
      { id: 32, date: '2020年2月5日', type: '门诊病历', doctor: '胡医生', patient: '蒋峰', diagnosis: '盆腔炎' },
      { id: 33, date: '2020年3月10日', type: '门诊病历', doctor: '郭医生', patient: '蒋峰', diagnosis: '附件炎' },
      { id: 34, date: '2020年4月15日', type: '门诊病历', doctor: '何医生', patient: '蒋峰', diagnosis: '输卵管堵塞' },
      { id: 35, date: '2020年5月20日', type: '门诊病历', doctor: '王医生', patient: '蒋峰', diagnosis: '多囊卵巢综合征' },
      { id: 36, date: '2020年6月25日', type: '门诊病历', doctor: '李医生', patient: '蒋峰', diagnosis: '子宫内膜异位症' }
    ],
    filteredRecordList: [],
    activeFilter: 'year',
    years: [2020, 2021, 2022, 2023, 2024, 2025],
    months: ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'],
    days: ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31'],
    startPickerValue: [5, 0, 0],
    endPickerValue: [5, 11, 30],
    startDate: '2025年01月01日',
    endDate: '2025年12月31日',
    currentSelecting: 'start',
    pickerValue: [5, 0, 0]
  },

  onLoad(options) {
    console.log('病历查询页面加载');
    this.loadPatientInfo();
    this.filterRecordsByYear(2025);
  },

  // 加载就诊人信息
  loadPatientInfo() {
    wx.request({
      url: 'http://localhost:8005/patient/list',
      method: 'GET',
      header: { 'Content-Type': 'application/json' },
      success: (res) => {
        if (res.statusCode === 200 && res.data) {
          let list = res.data
          if (typeof list === 'string') {
            try { list = JSON.parse(list) } catch (e) { return }
          }
          if (list.code !== undefined) list = list.data
          if (!Array.isArray(list)) return
          
          // 保存完整的就诊人列表
          const mapped = list.map(p => ({
            id: p.id,
            name: p.name,
            relation: p.relationTypeName || '本人',
            idNumber: (p.idCardNumber || '').replace(/(\w{3})\w+(\w{2})/, '$1********$2')
          }))
          
          this.setData({ patientList: mapped })
          
          // 找到默认就诊人
          const defaultPatient = list.find(p => p.isDefault === 1)
          if (defaultPatient) {
            this.setData({
              patientInfo: {
                name: defaultPatient.name,
                relation: defaultPatient.relationTypeName || '本人',
                idNumber: (defaultPatient.idCardNumber || '').replace(/(\w{3})\w+(\w{2})/, '$1********$2')
              }
            })
          } else {
            // 如果没有默认就诊人，使用第一个就诊人
            const firstPatient = list[0]
            if (firstPatient) {
              this.setData({
                patientInfo: {
                  name: firstPatient.name,
                  relation: firstPatient.relationTypeName || '本人',
                  idNumber: (firstPatient.idCardNumber || '').replace(/(\w{3})\w+(\w{2})/, '$1********$2')
                }
              })
            }
          }
        }
      }
    })
  },

  switchPatient() {
    this.setData({ showPatientModal: true });
  },

  closePatientModal() {
    this.setData({ showPatientModal: false });
  },

  stopPropagation() {
    // 阻止事件冒泡
  },

  selectPatient(e) {
    const patient = e.currentTarget.dataset.patient;
    this.setData({
      patientInfo: patient,
      showPatientModal: false
    });

    // 保存到本地存储
    const cacheUser = wx.getStorageSync('userInfo') || {}
    wx.setStorageSync('userInfo', { ...cacheUser, patientId: patient.id })
  },

  selectTimeRange(e) {
    this.filterRecordsByYear(2025);
    this.setData({ activeFilter: 'year' });
  },

  showTimePicker() {
    this.setData({ 
      showTimePicker: true, 
      currentSelecting: 'start',
      pickerValue: this.data.startPickerValue 
    });
  },

  closeTimePicker() {
    this.setData({ showTimePicker: false });
  },

  selectStartDate() {
    this.setData({ 
      currentSelecting: 'start', 
      pickerValue: this.data.startPickerValue 
    });
  },

  selectEndDate() {
    this.setData({ 
      currentSelecting: 'end', 
      pickerValue: this.data.endPickerValue 
    });
  },

  onPickerChange(e) {
    const pickerValue = e.detail.value;
    
    if (this.data.currentSelecting === 'start') {
      this.setData({
        startPickerValue: pickerValue,
        startDate: `${this.data.years[pickerValue[0]]}年${this.data.months[pickerValue[1]]}月${this.data.days[pickerValue[2]]}日`
      });
    } else {
      this.setData({
        endPickerValue: pickerValue,
        endDate: `${this.data.years[pickerValue[0]]}年${this.data.months[pickerValue[1]]}月${this.data.days[pickerValue[2]]}日`
      });
    }
  },

  confirmTimeRange() {
    this.filterRecordsByDateRange(this.data.startDate, this.data.endDate);
    this.setData({ 
      showTimePicker: false, 
      activeFilter: 'custom' 
    });
  },

  viewRecordDetail(e) {
    const record = e.currentTarget.dataset.record;
    wx.navigateTo({
      url: `/pages/medical-record-detail/medical-record-detail?record=${JSON.stringify(record)}`
    });
  },

  filterRecordsByYear(year) {
    const filteredRecords = this.data.recordList.filter(record => {
      const recordYear = parseInt(record.date.substring(0, 4));
      return recordYear === year;
    });
    this.setData({ filteredRecordList: filteredRecords });
  },

  filterRecordsByDateRange(startDate, endDate) {
    const startYear = parseInt(startDate.substring(0, 4));
    const startMonth = parseInt(startDate.substring(5, 7));
    const startDay = parseInt(startDate.substring(8, 10));
    const endYear = parseInt(endDate.substring(0, 4));
    const endMonth = parseInt(endDate.substring(5, 7));
    const endDay = parseInt(endDate.substring(8, 10));

    const filteredRecords = this.data.recordList.filter(record => {
      const recordDate = record.date;
      const recordYear = parseInt(recordDate.substring(0, 4));
      const recordMonth = parseInt(recordDate.substring(5, 7));
      const recordDay = parseInt(recordDate.substring(8, 10));

      const recordDateNum = recordYear * 10000 + recordMonth * 100 + recordDay;
      const startDateNum = startYear * 10000 + startMonth * 100 + startDay;
      const endDateNum = endYear * 10000 + endMonth * 100 + endDay;

      return recordDateNum >= startDateNum && recordDateNum <= endDateNum;
    });

    this.setData({ filteredRecordList: filteredRecords });
  }
});



